package config

import (
	"fmt"
	"strings"

	"gitee.com/xiaoyutab/xgotool/xerror"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var dns_connect map[string]*gorm.DB = map[string]*gorm.DB{}

// 获取MySQL的数据库连接
//
//	mysql	配置项中的MySQL连接
func GetMysqlDns(mysql MySql) string {
	return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=true",
		mysql.User, mysql.Pass, mysql.Host, mysql.Port, mysql.Databases,
	)
}

// 获取数据库连接
//
//	typ	数据库连接
//	dns	连接DNS字符串
func GetConnect(typ, dns string) (*gorm.DB, error) {
	if v, ok := dns_connect[dns]; ok {
		return v, nil
	}
	typ = strings.ToLower(typ)
	// 进行数据库连接
	switch typ {
	case "mysql":
		db, err := gorm.Open(mysql.Open(dns), &gorm.Config{})
		if err != nil {
			return nil, err
		}
		dns_connect[dns] = db
		return db, nil
	}
	return nil, xerror.New("数据库类型未找到")
}
